#include <iostream>
using namespace std;
/*
	const 
		修饰变量  只读属性
		const int x = 100;
		x = 99;		//error
		int *p  = &x;			//C++禁止非const指针指向const修饰的对象
		*p = 99;		//successful

		const int *p;		// *p不可变  p可变
		int const *p;		//同上
		int *const p;		// *p可变	p不可变
		int const * const p;// p *p都不可变

		//int const ***const **const *p;


		修饰成员函数
			: 一个const修饰的成员函数，在函数体内部，不能修改类中的成员属性
			const修饰成员函数的本质是修饰类隐士参数this指针, 所有this指针指向的空间，都不能被修改.
			const对象只能调用const方法
			非const对象可以调用const和非const方法
*/

//没有this指针
void func(int const *x) const
{

}

class Ex{
private:
	int 	x;
public:
	Ex(int x):x(x){}

	//void display(const Ex* const this)
	void display() const
	{ 
		//this>x = 99;
		cout << x << endl;
	}

	//void display_ex(Ex* const this);
	void display_ex()
	{
		x = 99;
		cout << x << endl;
	}
};


int main(void)
{
	const Ex e(100);
	//display(&e)				//display(const Ex*)
	e.display();
	e.display_ex();

	return 0;
}
